package cn.demoncat.util.stock.entity;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 行情
 *
 * @author 延晓磊
 * @since 2023年10月19日
 */
@Data
public class Market {

    // 交易所：StockConstant.Bourse
    private String bourse;
    // 编码（空表示指数）
    private String code;
    // 名称
    private String name;
    // 价格
    private Price price;
    // 涨跌幅
    private BigDecimal rate;
    // 涨跌额
    private BigDecimal change;
    // 成交额
    private BigDecimal amount;
    // 成交量
    private BigDecimal volume;
    // 买盘
    private List<Step> buy;
    // 卖盘
    private List<Step> sell;
    // 图表
    private Chart chart;
    // 时间
    private LocalDateTime time;


    /**
     * 价格
     */
    @Data
    public static class Price{
        // 昨收
        private BigDecimal init;
        // 开盘
        private BigDecimal open;
        // 收盘（当前）
        private BigDecimal close;
        // 最高
        private BigDecimal high;
        // 最低
        private BigDecimal low;
        // 涨停
        private BigDecimal max;
        // 跌停
        private BigDecimal min;
    }

    /**
     * 买卖档
     */
    @Data
    public static class Step{
        // 价格
        private BigDecimal price;
        // 数量
        private BigDecimal volume;

        public static Step build(BigDecimal price, BigDecimal volume){
            Step step = new Step();
            step.price = price;
            step.volume = volume;
            return step;
        }
    }

    /**
     * 图表
     */
    @Data
    public static class Chart{
        // 分时
        private String min;
        // 日线
        private String day;
        // 财线
        private String week;
        // 月线
        private String month;
        // 年线
        private String year;
    }


}
